Tech

Diary

Lecture

About Me

개발중

CPU 스케줄링

JeongSeulho

2025년 01월 03일

준비중...
클립보드로 복사

스케줄링 목표

  1. 리소스 사용률 최대화
  2. 오버헤드 최소화
  3. 프로세스에게 자원 할당 공평화
  4. 처리량 최대화
  5. 요청 - 작업시작 간의 대기시간 최소화
  6. 응답시간 최소화

스케줄링 종류

  • burst time : 프로세스가 CPU를 사용하는 시간
  • time slice : 프로세스에게 부여된 CPU 할당 시간
  • FIFO(First In First Out)
    • 먼저 온 프로세스를 먼저 처리
    • 평균 대기시간이 길어질 수 있음(burst time이 큰 프로세스가 먼저 점유해버리면 뒤에 프로세스는 오래 기다림)
  • SJF(Shortest Job First)
    • 짧은 burst time을 가진 프로세스를 먼저 처리
    • 평균 대기시간이 짧음
    • starvation 문제(burst time이 큰 프로세스는 계속해서 뒤로 밀릴 수 있음)
    • burst time은 예측하기 어려운 경우가 다수
  • RR(Round Robin)
    • 시분할 시스템
    • 각 프로세스는 동일한 크기의 CPU 시간을 할당받음
    • 할당받은 시간이 지나면 다음 프로세스로 넘어감
    • 시간이 너무 작으면 오버헤드(컨텍스트 스위칭)가 발생, 너무 크면 FIFO와 같은 효과
  • MLFQ(Multi Level Feedback Queue)

image

  • 가장 높은 우선순위 큐에 할당 이후 프로세스 종류에따라 아래 우선순위 큐로 이동
  • 우선순위가 높은 큐
    • time slice가 짧게
    • 반응성을 높이기 위한 IO 작업이 주로 배치
  • 우선순위가 낮은 큐
    • time slice가 길게
    • CPU 사용량이 많은 CPU 작업이 주로 배치
  • 아래 큐로 이동하는 과정
    1. 짧은 time slice에서 계속해서 작업 완료전에 끊김
    2. CPU 중심 프로세스임을 확인
    3. time slice를 늘려주는 아래 큐로 이동
    • IO 중심 프로세스는 작업 완료전에 IO 인터럽트로 끊김 => 내려가지 않고 높은 우선순위의 짧은 time slice에서 높은 반응성 가짐